package com.wit.example.fragment;

import android.graphics.Color;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ScrollView;

import com.github.mikephil.charting.charts.HorizontalBarChart;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.formatter.IndexAxisValueFormatter;
import com.wit.example.R;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * A simple {@link Fragment} subclass.
 * Use the {@link DeviceFragment#newInstance} factory method to
 * create an instance of this fragment.
 */
public class DeviceFragment extends Fragment {

    HorizontalBarChart chart;
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    private String username;

    public DeviceFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment DeviceFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static DeviceFragment newInstance(String param1, String param2) {
        DeviceFragment fragment = new DeviceFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
            username = getArguments().getString("USERNAME_KEY");
        }

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_device, container, false);
        // return inflater.inflate(R.layout.fragment_device, container, false);

        chart = view.findViewById(R.id.chart);
        setupChart();


        return view;
    }

    private void setupChart() {
        List<String> activities = Arrays.asList(
                "活动 1", "活动 2", "活动 3", "活动 4", "活动 5",
                "活动 6", "活动 7", "活动 8", "活动 9", "活动 10",
                "活动 11", "活动 12", "活动 13", "活动 14", "活动 15",
                "活动 16", "活动 17", "活动 18", "活动 19", "活动 20",
                "活动 21", "活动 22", "活动 23", "活动 24", "活动 25",
                "活动 26", "活动 27", "活动 28", "活动 29", "活动 30"
        );

        List<BarEntry> entries = new ArrayList<>();
        for (int i = 0; i < activities.size(); i++) {
            entries.add(new BarEntry(i, (float) (Math.random() * 100 + 20)));
        }


        BarDataSet dataSet = new BarDataSet(entries, "活动持续时间");
        dataSet.setColors(Color.BLUE);
        dataSet.setValueTextColor(Color.WHITE);
        dataSet.setValueTextSize(16f);

        BarData data = new BarData(dataSet);
        data.setBarWidth(0.9f);

        chart.setData(data);
        chart.setFitBars(true);
        chart.getDescription().setEnabled(false);
        chart.getAxisLeft().setDrawGridLines(false);
        chart.getAxisLeft().setAxisMinimum(0f);

        XAxis xAxis = chart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setDrawGridLines(false);
        xAxis.setGranularity(1f);
        xAxis.setTextSize(8f);
        xAxis.setLabelCount(activities.size());
        xAxis.setValueFormatter(new IndexAxisValueFormatter(activities));

        YAxis leftAxis = chart.getAxisLeft();
        leftAxis.setGranularity(1f);
        leftAxis.setTextSize(8f);

        chart.getAxisRight().setEnabled(false);
        chart.getLegend().setEnabled(false);
        chart.setPinchZoom(false);
        chart.setScaleYEnabled(false);
        chart.setScaleXEnabled(false);


//        // Set visible range to display the first 10 entries
//        chart.setVisibleXRangeMaximum(10);


        // Set visible range to display 10 entries
        chart.setVisibleXRangeMaximum(14);


        chart.invalidate();
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        chart.post(new Runnable() {
            @Override
            public void run() {
                chart.moveViewToX(0); // 调整视图到指定的X位置
                chart.invalidate(); // 可能需要调用以确保图表更新
            }
        });
    }

//    private void setupChart() {
//        List<String> activities = Arrays.asList(
//                "活动 1", "活动 2", "活动 3", "活动 4", "活动 5",
//                "活动 6", "活动 7", "活动 8", "活动 9", "活动 10",
//                "活动 11", "活动 12", "活动 13", "活动 14", "活动 15",
//                "活动 16", "活动 17", "活动 18", "活动 19", "活动 20",
//                "活动 21", "活动 22", "活动 23", "活动 24", "活动 25"
//        );
//
//        List<BarEntry> entries = new ArrayList<>();
//        for (int i = 0; i < activities.size(); i++) {
//            entries.add(new BarEntry(i, (float) (Math.random() * 100 + 20)));
//        }
//
//        BarDataSet dataSet = new BarDataSet(entries, "活动持续时间");
//        dataSet.setColors(Color.BLUE);
//        dataSet.setValueTextColor(Color.WHITE);
//        dataSet.setValueTextSize(16f);
//
//        BarData data = new BarData(dataSet);
//        data.setBarWidth(0.8f); // Set a reasonable bar width
//
//        chart.setData(data);
//        chart.setFitBars(true);
//        chart.getDescription().setEnabled(false);
//        chart.getAxisLeft().setDrawGridLines(false);
//        chart.getAxisLeft().setAxisMinimum(0f);
//
//        XAxis xAxis = chart.getXAxis();
//        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//        xAxis.setDrawGridLines(false);
//        xAxis.setGranularity(1f);
//        xAxis.setTextSize(8f);
//        xAxis.setLabelCount(activities.size());
//        xAxis.setValueFormatter(new IndexAxisValueFormatter(activities));
//
//        YAxis leftAxis = chart.getAxisLeft();
//        leftAxis.setGranularity(1f);
//        leftAxis.setTextSize(8f);
//
//        chart.getAxisRight().setEnabled(false);
//        chart.getLegend().setEnabled(false);
//        chart.setPinchZoom(false);
//        chart.setScaleYEnabled(false);
//        chart.setScaleXEnabled(false);
//
//        // Limit the visible range to about 10 entries
//        chart.setVisibleXRangeMaximum(14);
//
//        chart.invalidate();
//    }



//    private void setupChart() {
//        List<String> activities = Arrays.asList(
//                "活动 1", "活动 2", "活动 3", "活动 4", "活动 5",
//                "活动 6", "活动 7", "活动 8", "活动 9", "活动 10",
//                "活动 11", "活动 12", "活动 13", "活动 14", "活动 15",
//                "活动 16", "活动 17", "活动 18", "活动 19", "活动 20"
//        );
//
//        // 计算每个条目的高度
//        DisplayMetrics displayMetrics = new DisplayMetrics();
//        getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//        int screenHeight = displayMetrics.heightPixels;
//        int itemHeight = screenHeight / 10;  // 假设屏幕可以显示10个条目
//
//        // 根据条目数量设置图表的高度
//        int chartHeight = itemHeight * 10;
//        chart.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, chartHeight));
//
//        List<BarEntry> entries = new ArrayList<>();
//        for (int i = 0; i < activities.size(); i++) {
//            entries.add(new BarEntry(i, (float) (Math.random() * 100 + 20)));
//        }
//
//        BarDataSet dataSet = new BarDataSet(entries, "活动持续时间");
//        dataSet.setColors(Color.BLUE);
//        dataSet.setValueTextColor(Color.WHITE);
//        dataSet.setValueTextSize(16f);
//
//        BarData data = new BarData(dataSet);
//        data.setBarWidth(0.9f / Math.max(1, entries.size() / 10)); // Adjust the bar width
//
//        chart.setData(data);
//        chart.setFitBars(true);
//        chart.getDescription().setEnabled(false);
//        chart.getAxisLeft().setDrawGridLines(false);
//        chart.getAxisLeft().setAxisMinimum(0f);
//
//        XAxis xAxis = chart.getXAxis();
//        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//        xAxis.setDrawGridLines(false);
//        xAxis.setGranularity(1f);
//        xAxis.setGranularityEnabled(true); // Ensure each bar has a label
//        xAxis.setTextSize(8f);
//        xAxis.setLabelCount(activities.size(), false); // Force all labels to be shown
//        xAxis.setValueFormatter(new IndexAxisValueFormatter(activities));
//
//        YAxis leftAxis = chart.getAxisLeft();
//        leftAxis.setGranularity(1f);
//        leftAxis.setTextSize(8f);
//
//
//        chart.getAxisRight().setEnabled(false);
//        chart.getLegend().setEnabled(false);
//        chart.setPinchZoom(false); // Disable pinch zoom
//        chart.setScaleYEnabled(false); // Disable vertical scaling
//        chart.setScaleXEnabled(false); // Disable horizontal scaling
//
//        // Set the chart height to wrap its content, allowing ScrollView to handle the vertical scrolling
//        // chart.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
//
//        // Make sure the chart is updated with the new settings
//        chart.invalidate();
//    }








//    private void setupChart() {
//        List<BarEntry> entries = new ArrayList<>();
//        // 示例数据
//        entries.add(new BarEntry(0, 30f)); // 坐
//        entries.add(new BarEntry(1, 80f)); // 跑
//        entries.add(new BarEntry(2, 60f)); // 走
//        entries.add(new BarEntry(3, 50f)); // 站
//        entries.add(new BarEntry(4, 45f)); // 吃饭，添加新活动
//        entries.add(new BarEntry(5, 20f)); // 躺
//        entries.add(new BarEntry(6, 25f)); // 蹲下
//        entries.add(new BarEntry(7, 35f)); // 睡觉
//
//
//        BarDataSet dataSet = new BarDataSet(entries, "活动持续时间");
//        dataSet.setColors(Color.BLUE);
//        dataSet.setValueTextColor(Color.WHITE);
//        dataSet.setValueTextSize(16f);
//
//        BarData data = new BarData(dataSet);
//        data.setBarWidth(0.9f); // 设置条目的宽度
//
//        chart.setData(data);
//        chart.setFitBars(true);
//        chart.getDescription().setEnabled(false);
//        chart.getAxisLeft().setDrawGridLines(false);
//        chart.getAxisLeft().setAxisMinimum(0f); // 开始于0
//
//        // 设置横坐标显示活动名称
//        XAxis xAxis = chart.getXAxis();
//        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//        xAxis.setValueFormatter(new IndexAxisValueFormatter(new String[]{"坐", "跑", "走路", "站立", "吃饭", "躺", "蹲下","睡觉"}));// 更新活动名称
//        xAxis.setGranularity(1f);
//        xAxis.setGranularityEnabled(true);
//
//        // 不显示右边的 Y 轴
//        chart.getAxisRight().setEnabled(false);
//
//        // 不显示图例
//        chart.getLegend().setEnabled(false);
//
//        // 设置动画
//        chart.animateY(1000);
//
//        // 刷新图表
//        chart.invalidate();
//    }
}